package ar.edu.utn.frba.dds.tp.segundaEntrega.code.adapter;

import java.math.BigDecimal;

import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import ar.edu.utn.frba.dds.tp.segundaEntrega.code.AsientoDeVuelo;
import ar.edu.utn.frba.dds.tp.segundaEntrega.code.Busqueda;
import ar.edu.utn.frba.dds.tp.segundaEntrega.code.Vuelo;

public class Conversor {

	public String convertirAString(AsientoDeVuelo asiento) {
		return asiento.getCodigoDeVuelo() + "-" + asiento.getNumero();
	}

	public AsientoDeVuelo convertirAsiento(String[] infoDeAsiento) {
		
		AsientoDeVuelo asiento = new AsientoDeVuelo();
		asiento.setNumero(this.convertirANumeroDeAsiento(infoDeAsiento[0]));
		asiento.setVuelo(new Vuelo(this.convertirACodigoVuelo(infoDeAsiento[0])));
		asiento.setPrecio(new BigDecimal(infoDeAsiento[1]));
		asiento.setClase(infoDeAsiento[2]);
		asiento.setUbicacion(infoDeAsiento[3]);
		asiento.setEstado(infoDeAsiento[4]);
		
		return asiento;
	}
	
	//Formato "CodigoAvion-NumeroAsiento"
	private String convertirACodigoVuelo(String string) {
		String[] splitted = string.split("-");
		String codigo = splitted[0];
		return codigo;
		
	}
	//Formato "CodigoAvion-NumeroAsiento"
	private int convertirANumeroDeAsiento(String string) {
		String[] splitted = string.split("-");
		String codigo = splitted[1];
		return new Integer(codigo);
	}

	public String[] parsearBusqueda(Busqueda busqueda) {
		
		DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");
		
		String fechaSalida = (busqueda.getFechaSalida() == null) ? "" : busqueda.getFechaSalida().toString(fmt);
	
		String horaSalida = (busqueda.getHoraSalida() == null) ? "" : busqueda.getHoraSalida().toString(fmt);
			
		String fechaLlegada = (busqueda.getFechaLlegada() == null) ? "" : busqueda.getFechaLlegada().toString(fmt);
		
		String horaLlegada = (busqueda.getHoraLlegada() == null) ? "": busqueda.getHoraLlegada().toString(fmt);
		
		String[] busquedaParseada = {busqueda.getOrigen(),busqueda.getDestino(),fechaSalida,
									 horaSalida,fechaLlegada,horaLlegada	};
		
		
		return busquedaParseada;
	}
}
